package com.tencent.wxcloudrun.controller.map;

import com.tencent.wxcloudrun.config.ApiResponse;
import com.tencent.wxcloudrun.pojo.dto.req.SearchMapReq;
import com.tencent.wxcloudrun.pojo.dto.resp.GetCityTagResp;
import com.tencent.wxcloudrun.pojo.dto.resp.GetHouseDetailResp;
import com.tencent.wxcloudrun.pojo.dto.resp.MapPoint;
import com.tencent.wxcloudrun.pojo.dto.resp.UdIdToListResp;
import com.tencent.wxcloudrun.service.business.map.MapService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;

@RestController
@RequestMapping("/map")
@Validated
@Slf4j
public class MapController {

    @Resource
    private MapService mapService;

    /**
     * 城市标签
     */
    @GetMapping("/getCityTag")
    public ApiResponse<List<GetCityTagResp>> getCityTag() {
        return new ApiResponse<>(mapService.getCityTag());
    }

    /**
     * 用户进入地图页时，调用此接口用以确定当前所在城市。
     */
    @GetMapping("/getCurCity")
    public ApiResponse<String> getCurCity(@RequestParam("lng") Double lng, @RequestParam("lat") Double lat) {
        return new ApiResponse<>(mapService.getCurCity(lng, lat));
    }

    /**
     * 地图页面的搜索接口
     */
    @PostMapping("/searchMap")
    public ApiResponse<List<MapPoint>> searchMap(@Valid @RequestBody SearchMapReq req) {
        return new ApiResponse<>(mapService.searchMap(req));
    }

    /**
     * 获取当前坐标点的房屋列表数据
     */
    @GetMapping("/udIdToList")
    public ApiResponse<List<UdIdToListResp>> udIdToList(@RequestParam("udId") String udId) {
        return new ApiResponse<>(mapService.udIdToList(udId));
    }

    /**
     * 获取房屋详情
     */
    @GetMapping("/getHouseDetail")
    public ApiResponse<GetHouseDetailResp> getHouseDetail(@RequestParam("index") String index) {
        return new ApiResponse<>(mapService.getHouseDetail(index));
    }

    /**
     * 获取房东手机号，联系房东
     */
    @GetMapping("/getPhone")
    public ApiResponse<String> getPhone(@RequestParam("houseId") String houseId) {
        return new ApiResponse<>(mapService.getPhone(houseId));
    }


    /**
     * 发起租房申请
     *
     * @param houseId 房屋ID
     * @param num     租住的人数
     * @param liveYmd 比如想要租住 6个月    这里就填 月      想要租住3天   这里就填 天      年  月  日
     * @param liveNum 比如想要租住 6个月    这里就填 6      想要租住3天   这里就填 3         整数
     */
    @GetMapping("/applyHouse")
    public ApiResponse<String> applyHouse(@RequestParam("houseId") String houseId, @RequestParam("num") Integer num, @RequestParam("liveYmd") String liveYmd, @RequestParam("liveNum") Integer liveNum) {
        return new ApiResponse<>(mapService.applyHouse(houseId, num, liveNum, liveYmd));
    }

}
